package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.Conexion;
import bean.TipoSerie;

public class TipoSerieDAO {
	
	public List<TipoSerie> listar() throws SQLException{
		List<TipoSerie> listado = new ArrayList<TipoSerie>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,serie,descripcion,buscar,situ,orden " +
				"FROM tbl_tipo_serie");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			TipoSerie tipoSerie = new TipoSerie();
			tipoSerie.setId(rs.getInt("id"));
			tipoSerie.setSerie(rs.getString("serie"));
			tipoSerie.setDescripcion(rs.getString("descripcion"));
			tipoSerie.setBuscar(rs.getString("buscar"))	;		
			tipoSerie.setSitu(rs.getString("situ"));
			tipoSerie.setOrden(rs.getInt("orden"));
			listado.add(tipoSerie);
		}
		rs.close();
		pstm.close();
		return listado;
	}
		
	public List<TipoSerie> buscarPorSerie(String filtro,String situacion) throws SQLException{
		List<TipoSerie> listado = new ArrayList<TipoSerie>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,serie,descripcion,buscar,situ,orden  " +
				"FROM tbl_tipo_serie WHERE situ in ("+situacion+") and serie like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			TipoSerie tipoSerie = new TipoSerie();
			tipoSerie.setId(rs.getInt("id"));
			tipoSerie.setSerie(rs.getString("serie"));
			tipoSerie.setDescripcion(rs.getString("descripcion"));
			tipoSerie.setBuscar(rs.getString("buscar"));
			tipoSerie.setSitu(rs.getString("situ"));
			tipoSerie.setOrden(rs.getInt("orden"));
			listado.add(tipoSerie);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<TipoSerie> buscarPorAlias(String filtro,String situacion) throws SQLException{
		List<TipoSerie> listado = new ArrayList<TipoSerie>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,serie,descripcion,buscar,situ,orden  " +
						"FROM tbl_tipo_serie WHERE situ in ("+situacion+") and buscar like ?");
		pstm.setString(1, filtro+"%");	
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			TipoSerie tipoSerie = new TipoSerie();
			tipoSerie.setId(rs.getInt("id"));
			tipoSerie.setSerie(rs.getString("serie"));
			tipoSerie.setDescripcion(rs.getString("descripcion"));
			tipoSerie.setBuscar(rs.getString("buscar"));
			tipoSerie.setSitu(rs.getString("situ"));
			tipoSerie.setOrden(rs.getInt("orden"));
			listado.add(tipoSerie);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<TipoSerie> buscarPorAlias(String filtro) throws SQLException{
		List<TipoSerie> listado = new ArrayList<TipoSerie>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,serie,descripcion,buscar,situ,orden  " +
						"FROM tbl_tipo_serie WHERE buscar = ?");
		pstm.setString(1, filtro);	
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			TipoSerie tipoSerie = new TipoSerie();
			tipoSerie.setId(rs.getInt("id"));
			tipoSerie.setSerie(rs.getString("serie"));
			tipoSerie.setDescripcion(rs.getString("descripcion"));
			tipoSerie.setBuscar(rs.getString("buscar"));
			tipoSerie.setSitu(rs.getString("situ"));
			tipoSerie.setOrden(rs.getInt("orden"));
			listado.add(tipoSerie);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<TipoSerie> buscarPorDescripcion(String filtro,String situacion) throws SQLException{
		List<TipoSerie> listado = new ArrayList<TipoSerie>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,serie,descripcion,buscar,situ,orden  " +
						"FROM tbl_tipo_serie WHERE situ in ("+situacion+") and descripcion like ?");
		pstm.setString(1, filtro + "%");	
		ResultSet rs = pstm.executeQuery();
		while (rs.next()) {
			TipoSerie tipoSerie = new TipoSerie();
			tipoSerie.setId(rs.getInt("id"));
			tipoSerie.setSerie(rs.getString("serie"));
			tipoSerie.setDescripcion(rs.getString("descripcion"));
			tipoSerie.setBuscar(rs.getString("buscar"));
			tipoSerie.setSitu(rs.getString("situ"));
			tipoSerie.setOrden(rs.getInt("orden"));
			listado.add(tipoSerie);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<TipoSerie> buscarPorOrden(int filtro,String situacion) throws SQLException{
		List<TipoSerie> listado = new ArrayList<TipoSerie>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT id,serie,descripcion,buscar,situ,orden  " +
				"FROM tbl_tipo_serie WHERE situ in ("+situacion+") and orden = ?");
		pstm.setInt(1, filtro);
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			TipoSerie tipoSerie = new TipoSerie();
			tipoSerie.setId(rs.getInt("id"));
			tipoSerie.setSerie(rs.getString("serie"));
			tipoSerie.setDescripcion(rs.getString("descripcion"));
			tipoSerie.setBuscar(rs.getString("buscar"));
			tipoSerie.setSitu(rs.getString("situ"));
			tipoSerie.setOrden(rs.getInt("orden"));
			listado.add(tipoSerie);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public int insertar(TipoSerie tipoSerie) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"insert into tbl_tipo_serie (serie,descripcion,buscar,situ,orden,usuario_creacion,fecha_creacion) values (?,?,?,?,?,?,?)");
		pstm.setString(1, tipoSerie.getSerie());
		pstm.setString(2, tipoSerie.getDescripcion());
		pstm.setString(3, tipoSerie.getBuscar());
		pstm.setString(4, tipoSerie.getSitu());
		pstm.setInt(5, tipoSerie.getOrden());
		pstm.setString(6, tipoSerie.getUsuario_creacion());
		pstm.setInt(7, tipoSerie.getFecha_creacion());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
	
	public int actualizar(TipoSerie tipoSerie) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"update tbl_tipo_serie set descripcion = ?,buscar = ?,situ = ?,orden = ?,usuario_modificacion = ?,fecha_modificacion = ? where id = ?");
		pstm.setString(1, tipoSerie.getDescripcion());
		pstm.setString(2, tipoSerie.getBuscar());
		pstm.setString(3, tipoSerie.getSitu());
		pstm.setInt(4, tipoSerie.getOrden());
		pstm.setString(5, tipoSerie.getUsuario_modificacion());
		pstm.setInt(6, tipoSerie.getFecha_modificacion());
		pstm.setInt(7, tipoSerie.getId());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
}
